package com.qf.common.core.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
* 用户基本信息表
* @TableName user
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
    * 用户ID，主键
    */
    @NotBlank(message="[用户ID，主键]不能为空")
    @ApiModelProperty("用户ID，主键")
    @TableId(type = IdType.AUTO)
    private Integer userId;
    /**
    * 用户名(登录用)
    */
    @NotBlank(message="[用户名(登录用)]不能为空")
    @Size(max= 25,message="编码长度不能超过25")
    @ApiModelProperty("用户名(登录用)")
    @Length(max= 25,message="编码长度不能超过25")
    private String userName;
    /**
    * 用户昵称
    */
    @NotBlank(message="[用户昵称]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("用户昵称")
    @Length(max= 50,message="编码长度不能超过50")
    private String userNickname;
    /**
    * 用户密码
    */
    @NotBlank(message="[用户密码]不能为空")
    @Size(max= 50,message="编码长度不能超过50")
    @ApiModelProperty("用户密码")
    @Length(max= 50,message="编码长度不能超过50")
    private String userPassword;
    /**
    * 手机号
    */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("手机号")
    @Length(max= 20,message="编码长度不能超过20")
    private String userMobile;
    /**
    * 电子邮箱
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("电子邮箱")
    @Length(max= 100,message="编码长度不能超过100")
    private String userEmail;
    /**
    * 用户真实姓名
    */
    @Size(max= 20,message="编码长度不能超过20")
    @ApiModelProperty("用户真实姓名")
    @Length(max= 20,message="编码长度不能超过20")
    private String userRealname;
    /**
    * 用户性别(男/女)
    */
    @NotBlank(message="[用户性别(男/女)]不能为空")
    @ApiModelProperty("用户性别(男/女)")
    private String userGender;
    /**
    * 用户生日
    */
    @NotBlank(message="[用户生日]不能为空")
    @ApiModelProperty("用户生日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date userBirthday;
    /**
    * 用户现居地ID，外键
    */
    @NotBlank(message="[用户现居地ID，外键]不能为空")
    @ApiModelProperty("用户现居地ID，外键")
    private String userAddress;
    /**
    * 用户家乡ID，外键
    */
    @NotBlank(message="[用户家乡ID，外键]不能为空")
    @ApiModelProperty("用户家乡ID，外键")
    private String userHomeplace;
    /**
    * 用户头像路径
    */
    @Size(max= 100,message="编码长度不能超过100")
    @ApiModelProperty("用户头像路径")
    @Length(max= 100,message="编码长度不能超过100")
    private String userProfilePictureSrc;
    /**
    * 状态(0-禁用 1-启用)
    */
    @ApiModelProperty("状态(0-禁用 1-启用)")
    private Integer userStatus;
    /**
    * 注册时间
    */
    @ApiModelProperty("注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date userRegisterTime;
    /**
    * 最后登录时间
    */
    @ApiModelProperty("最后登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date userLastLoginTime;
    /**
    * 身份证号
    */
    @ApiModelProperty("身份证号")
    private String cardNo;
    /**
    * 积分
    */
    @ApiModelProperty("积分")
    private Integer point;
    /**
    * 更新时间
    */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
    * 邀请人id
    */
    @ApiModelProperty("邀请人id")
    private Integer pid;
    /**
    * 邀请码
    */
    @ApiModelProperty("邀请码")
    private String inviteCode;
    /**
     * 余额
     */
    @ApiModelProperty("余额")
    private BigDecimal userMoney;
    /**
     * 盐值
     */
    @ApiModelProperty("盐值")
    private String salt;
}
